package kku.cs.fgl.transition;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;

public class Move extends TransitionBase {
	public static final int MOVE_IN = 0;
	public static final int MOVE_OUT = 1;
	protected float target_x,target_y; 
	protected float src_x,src_y; 
	protected int mode; 

	public Move() {
		
	}
	public Move(float tx,float ty,int mode) {
		this(1000,tx,ty,mode);
	}

	public Move(int duration,float tx,float ty,int mode) {
		super(duration);
		this.mode = mode;
		this.target_x=tx;
		this.target_y=ty;		
		this.src_x = target_x;
		this.src_y = target_y;
	}
	

	public void update(StateBasedGame game, GameContainer container, int delta) throws SlickException {
		super.update(game, container, delta);
		float t=(float)getTime()/getDuration();
		updateScene(t);
	}
	public void updateScene(float dtime){
		float tx=src_x+(target_x-src_x)*dtime;
		float ty=src_y+(target_y-src_y)*dtime;
		scene1.setCenter(tx,ty);		
	}
	void init(StateBasedGame game, GameContainer container) {
		if(mode==MOVE_IN){
			this.target_x = container.getWidth()/2;
			this.target_y = container.getHeight()/2;
		}else{
			this.src_x = container.getWidth()/2;
			this.src_y = container.getHeight()/2;			
		}
		time=0;
		updateScene(0);
		//System.out.println("move from "+src_x+","+src_y+" to "+target_x+","+target_y);
	}
	
}
